package com.ruoyi.customerPool.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.customer.common.DisCustomerRequestBo;
import com.ruoyi.customer.domain.Customer;
import com.ruoyi.customer.domain.bo.CustomerPoolPullBo;
import com.ruoyi.customer.domain.vo.CustomerImportVo;
import com.ruoyi.customerPool.domain.bo.*;
import com.ruoyi.customerPool.domain.vo.CustomerPoolVo;
import com.ruoyi.customerPool.domain.vo.UserVo;

import java.util.List;

public interface ICustomerPoolService {

    TableDataInfo<CustomerPoolVo> queryPageCustomerPoolList(CustomerPoolBo bo, PageQuery pageQuery);

    TableDataInfo<CustomerPoolVo> queryPageSameLevelPoolList(CustomerPoolBo bo, PageQuery pageQuery);

    TableDataInfo<CustomerPoolVo> queryPageLowerLevelPoolList(CustomerPoolBo bo, PageQuery pageQuery);

    TableDataInfo<CustomerPoolVo> querySuperiorCustomerList(CustomerPoolBo bo, PageQuery pageQuery);

    List<UserVo> getUsrList(UserBo userBo);

    List<SysDept> getDeptList(DeptBo deptBo);

    List<SysDept> getDeptInfoList(SysDept sysDept);

    String downLoad();

    void allotCustomerToDept(DisCustomerRequestBo requestBo);

    void allotCustomerToUser(DisCustomerRequestBo requestBo);

    void returnCustomer(CustomerReturn customerReturn);

    void deptPoolPull(CustomerPoolPullBo customerReturn);

    String importCustomerData(List<CustomerImportVo> customerImportVos);

    //void export(List<CustomerImportVo> customerImportVos, String tableName);

    void exportTotalCustom(List<CustomerImportVo> customerImportVos, String tableName, String batchLogo);

    R bathReturnTotalCutomer(Customer customer);
}
